package com.fun_ordering.util;

import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateUtil {

    private static String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";

    /**
     * 将字符串转换为 LocalDateTime 对象
     * @param dateString 日期时间字符串
     * @param format 日期时间格式
     * @return LocalDateTime 对象
     */
    public static LocalDateTime parseStringToLocalDateTime(String dateString, String format) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return LocalDateTime.parse(dateString, formatter);
    }

    /**
     * 将 LocalDateTime 对象转换为字符串
     * @param dateTime LocalDateTime 对象
     * @param format 日期时间格式
     * @return 日期时间字符串
     */
    public static String formatLocalDateTime(LocalDateTime dateTime, String format) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return dateTime.format(formatter);
    }

    /**
     * 将字符串转换为 LocalDateTime 对象，使用默认格式
     * @param dateString 日期时间字符串
     * @return LocalDateTime 对象
     */
    public static LocalDateTime parseStringToLocalDateTime(String dateString) {
        return parseStringToLocalDateTime(dateString, DEFAULT_FORMAT);
    }

    /**
     * 将 LocalDateTime 对象转换为字符串，使用默认格式
     * @param dateTime LocalDateTime 对象
     * @return 日期时间字符串
     */
    public static String formatLocalDateTime(LocalDateTime dateTime) {
        return formatLocalDateTime(dateTime, DEFAULT_FORMAT);
    }

    /**
     * 获取当前系统时间的字符串表示形式
     * @return 格式化的当前系统时间字符串
     */
    public static String getCurrentTimeString() {
        LocalDateTime now = LocalDateTime.now(); // 获取当前系统时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_FORMAT); // 定义日期时间格式
        return now.format(formatter); // 格式化并返回字符串
    }

    /**
     * 获取当前系统时间的字符串表示形式
     * @param dateFormat 日期时间的格式
     * @return 格式化的当前系统时间字符串
     */
    public static String getCurrentTimeString(String dateFormat) {

        if(StringUtils.isEmpty(dateFormat)){
            dateFormat = DEFAULT_FORMAT;
        }

        LocalDateTime now = LocalDateTime.now(); // 获取当前系统时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dateFormat); // 定义日期时间格式
        return now.format(formatter); // 格式化并返回字符串
    }

    public static void main(String[] args) {
        // 使用DateUtil获取当前系统时间的字符串表示，并打印
        String currentTime = getCurrentTimeString("yyyy-MM-dd HH:mm:ss");
        System.out.println("Current Time: " + currentTime);
    }
}
